package net.ib.mtalk.service;

import net.ib.mtalk.global.GlobalApplication;

/**
 * 공용 바인드 환경을 이용하기 위한 인터페이스. 반복적인 바인드 속도의 향상을 가져온다.
 * 이 인터페이스를 이용하여 {@link GlobalApplication#checkService(BindCallback)}를 호출하면, 서비스에 바인드할 수 있다.
 * 
 * @author Arngard
 *
 */
public interface BindCallback {
	
	/**
	 * onCreate()나 onNewIntent()가 부르는 checkService()에 의해 이 함수의 호출이 유도된다.
	 * 바인딩된 서비스 객체를 새로 얻어오는 데 성공했다면, 비동기적으로 호출된다. 이미 객체를 얻어온 적이 있다면 호출되지 않는 점에 주의.
	 * 정상적인 경우, onCreate()나 onNewIntent()가 리턴된 후 임의의 시점에 불리게 된다.<br>
	 * <br>
	 * 다른 코드에서 이 시그니처를 수동으로 호출해도 문제는 없다.
	 * @param service 바인딩된 서비스의 객체.
	 */
	void onNewBind(SelecterService service);//(LocalService service);

	/**
	 * onCreate()나 onNewIntent()가 부르는 checkService()에 의해 이 함수의 호출이 유도된다.
	 * 이미 바인딩된 객체가 있었을 경우 호출된다.
	 * 정상적인 경우, onCreate()나 onNewIntent()가 리턴된 후 임의의 시점에 불리게 된다.<br>
	 * <br>
	 * 다른 코드에서 이 시그니처를 수동으로 호출해도 문제는 없다.
	 * @param service 바인딩된 서비스의 객체.
	 */
	void onRebind(SelecterService service);//(LocalService service);
}
